"""
@name : 三乐购物系统
@author : caohx
@projectname: Python课程
"""

# 三乐购物系统
# • 使用系统需要登录验证，进入系统后，输入购物预算信息
# • 用户可以任意查看商品信息和已购买信息
# • 用户根据商品编号购买商品，购买时，检测余额是否够，够就直接扣款，不够就提醒
# • 可随时退出（输入exit），退出后，打印已购买商品和余额
# • 要求：用尽可能友好的方式输出(作业需要提交代码及执行结果截图)
# 封装函数
# {'F00001': {'name': '苹果', 'price': 1.2}, 'F00002': {'name': '香蕉', 'price': 5.5}, }

print('{0:^50}'.format('三乐购物系统'))
commodity = {'F00001': {'name': '苹果', 'price': 1.2}, 'F00002': {'name': '香蕉', 'price': 5.5},
             'F00003': {'name': '饼干', 'price': 6.0}, 'F00004': {'name': '大米', 'price': 2.0}}
buy = []
out = ''
budget = 0
# • 使用系统需要登录验证，进入系统后，输入购物预算信息
while out != 'exit':
    username = input('请输入用户名:')
    passwd = input('请输入密码:')
    if username == 'root' and passwd == '123456':
        while out != 'exit':
            enter = input(f'欢迎#{username}#进入三乐购物系统，退出登录请输入quit，退出系统请输入exit,进入购物请输入购物预算:')
            if enter != 'quit' and enter != 'exit':
                while out != 'exit':
                    budget = str(enter).replace('.', '')
                    if budget.isdigit() and float(budget) > 0:
                        # • 用户可以任意查看商品信息和已购买信息
                        step1 = input('输入select查看商品信息，输入buy查看已购买信息,输入shop购买物品,输入exit退出系统，输入quit返回上一级：')
                        while out != 'exit' and step1 != 'quit':
                            if step1 == 'select':
                                for i in commodity:
                                    print(f'{commodity[i]},')
                                break
                            elif step1 == 'buy':
                                print(buy)
                                break
                                # • 用户根据商品编号购买商品，购买时，检测余额是否够，够就直接扣款，不够就提醒
                            elif step1 == 'shop':
                                print(commodity)
                                while out != 'exit':
                                    step2 = input('请输入想购买的商品编号,输入quit返回上一级，输入exit退出系统')
                                    if step2 in commodity:
                                        buynum = input('请输入想购买的数量')
                                        if int(buynum) * float(commodity[step2]["price"]) <= float(budget):
                                            budget = float(budget) - int(buynum) * float(commodity[step2]["price"])
                                            print('购买成功！结算后余额：%.2f' % budget)
                                            buy = buy + [f'{commodity[step2]["name"]}，数量{buynum}']
                                        else:
                                            print(f'余额不足！当前余额：%.2f' % budget)
                                    elif step2 == 'quit':
                                        break
                                    elif step2 == 'exit':
                                        out = 'exit'
                                    else:
                                        print('商品不存在！')
                                break
                            elif step1 == 'exit':
                                out = 'exit'
                                break
                            else:
                                print('请按提示完成操作')
                                break
                        else:
                            break

                    else:
                        print('请输入大于0的数字')
                        break
            elif enter == 'exit':
                enter = 0
                out = 'exit'
            elif enter == 'quit':
                enter = 0
                break
    elif username == 'exit' or passwd == 'exit':
        break
    else:
        print('用户名或密码错误，请重试！或输入exit退出程序')
else:
    print(f'已购买商品{buy}')
    print(f'当前余额：%.2f' % budget)